#include "comm.hpp"

int main()
{
	char buff[1024];
	SetNonBlock(0);
	while (true)
	{
		ssize_t s = ::read(0, buff, sizeof(buff) - 1);
		if (s > 0)
		{
			buff[s] = 0;
			std::cout << "Echo# " << buff << std::endl;
		}
		else
		{
			// 问题:我怎么知道是底层IO条件不就绪，还是读取错误了呢？？？
			//  底层IO条件就绪和读取错误采用的是同样返回值操作的
			if (errno == EWOULDBLOCK || errno == EAGAIN)
			{
				std::cout << "底层数据没有就绪, 下次在试试吧! 做做其他事情！" << std::endl;
				sleep(1);
				continue;
			}
			else if (errno == EINTR)
			{
				continue;
			}
			else
			{
				std::cout << "读取错误... s : " << s << " errno: " << errno << std::endl;
				sleep(1);
			}
		}
	}
	return 0;
}